package com.mframe.struts;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class Struts2DateConverter extends StrutsTypeConverter {
	private static final DateFormat[] ACCEPT_DATE_FORMATS = {
			new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
			new SimpleDateFormat("yyyy-MM-dd HH:mm"),
			new SimpleDateFormat("yyyy-MM-dd")}; // 支持转换的日期格式


	@Override
	public Object convertFromString(Map context, String[] params, Class toType) {
		if (toType == Date.class) { // 浏览器向服务器提交时，进行String to Date的转换
			Date date = null;
			String dateString = null;
			dateString = params[0];// 获取日期的字符串
			for (DateFormat format : ACCEPT_DATE_FORMATS) {
				try {
					date = format.parse(dateString);// 遍历日期支持格式，进行转换
					return date;
				} catch (Exception e) {
					continue;
				}
			}
		}
		return null;
	}

	@Override
	public String convertToString(Map context, Object value) {
		Date date = (Date) value;
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);// 输出的格式是yyyy-MM-dd
	}
}
